@微光
2年前 提问
1个回答

Web 应用安全测评实施流程是什么

X0_0X
2年前
官方采纳

针对典型的Web应用安全测评,可以将其划分为以下5个阶段:资产划分,信息收集,突破识别,安全评估以及解决方案的制定。

1.资产划分

在Web安全测评中,资产划分是所有工作的基础,正所谓“方向问题是根本问题”。不同的Web应用根据各自的功能,业务的不同,对于安全的需求有很大的差异。通常需要在工作的准备阶段对分段有一个高屋建瓴的认识,明确的工作目标以及被测对象在各个部分的安全需求。

2.信息收集

对于Web应用而言,可以通过枚举应用程序的内容与功能,确定用户输入点,服务器端采用的技术架构,服务器端功能,并可能分析出可能实施攻击的位置。

通常情况下,手动浏览即可确定应用程序的绝大部分内容和功能,但为了更全面地记录每项确定的功能,可以使用工具帮助进行分析,如Web Scarab, Nikto等。枚举应用程序功能时,基本可以确定应用程序获取用户输入的位置,主要包括:

  • (1) URL字符串,包括查询字符串标记:

  • (2)获取方式提交的参数:

  • (3) POST请求主体中提交的参数;

  • (4)饼干;

  • (5) HTTP消息头.如User Agent, Accept-Language等。

确定服务器端技术架构的方法规模,如版本信息,HTTP指纹,页面文件扩展名,目录名称,会话令牌和第三方代码组件。通过留意观察应用程序,一般可插入到与服务器端功能和结构有关的大量信息。例如,应用程序是否执行了一系列性的输入确认检查, 应用程序是否会查询已过期内容等。

3.防御识别

获取Web应用的相关信息后,就对目标应用的功能,技术架构和可能的攻击点有了基本的了解,接下来就要识别Web应用存在的各种安全漏洞。

目前,针对Web应用的安全测评方法主要分为模拟真实的动态攻击以发现突破的黑盒测试法和以扫描源代码发现突破的白盒测试法两类:黑盒测试在Web应用运行的时候对其进行分析,以发现攻击者可能发现的弱点,优点是可以验证突破及其可利用性,但也存在一些不足,如黑盒测试在开发生命周期方面,可能导致不完整的测试覆盖,黑盒测试也不能指出突破产生于应用程序中的特定位置;白盒测试主要针对Web应用的源代码进行分析,定位源代码中可能出现的安全缺陷,优点是在开发生命周期的编码阶段就可以对同时,白盒测试可以指出在应用代码中的位置,但白盒测试并不真正运行应用代码,可能会出现漏报。

在实际测评工作中,可以采用黑盒测试与白盒测试相结合的方式,在开发生命周期的不同阶段对系统进行安全测试,降低分解产生的几率。具体的入侵识别方法主要有以下4个方面。

  • (1)代码审查。代码审查是软件开发中常用的白盒测试手段,和质量保证(QA,质量保证)测试排序,它更容易发现与架构以及时序相关的问题。对Web应用程序代码进行审查时需要仔细检查的相关安全功能组件,包括用户验证组件,会话管理组件,访问控制组件,输入输出确认组件,外部组件接口。Web应用程序可以在很多平台上进行开发,进行代码审查时需要审查的代码不尽相同,但在不同的平台上进行代码审查,通常都包括确定用户提交数据的方法,检查会话交互过程,检查潜在危险的API使用和检查平台安全配置这几个步骤。许多类型的Web应用程序入侵的代码中都有相对致的特征,这也意味着通过扫描和搜索代码就可以确定一个Web应用程序的大部分入侵。如SQL注入入侵通常存在于各种硬编码的串行,与用户可终止的数据串联成最终执行语句;跨站脚本扩展存在于用户收到的HTML代码中,部分是由用户可控制的数据构成的:路径遍历扩展存在于用户可控制的输入,确认确认就被传送到文件系统API执行。

  • (2)数据流建模。数据流建模也是种基于白盒测试的方法, 需要Web应用的开发人员对Web系统可能产生的数据流从起点到终点进行全面,不遗漏的多重。通过梳理Web系统数据的来源盒走向,从Web系统的内部查找可能造成危害的来源,也包括应用程序的运行是否简洁高效,是否可能导致系统意外崩溃的弱点等。

  • (3)边界分析。边界分析是针对各个安全域的边界进行的分析。由于不同安全域的重要程度不同,其所使用的安全策略也应该有所区别,此时边界安全就引起尤为重要。进入Web应用程序的用户是否可以通过某些特定的存在的路径访问本地链接的数据,又如位于互联网之上的用户是否有跳过必要的认证(如登录)而对Web应用程序进行访问的可能。边界分析就是通过对Web应用中是否存在不合理的越界访问来定位一些典型的安全漏洞。

  • (4)渗透测试。相对于上述3种白盒测试方法,渗透测试完全从网络攻击者的角度,考虑并尝试各种入侵Web应用系统的通道。渗透测试可以避免测试者嵌入系统开发者固有的逻辑习惯和操作假设,其测试结果通常更为直观,因此对于Web应用程序的安全测评是非常重要的交换。常见的渗透测试方法包括针对Web应用认证机制的密码字典攻击和暴力破解,针对Web应用程序访问权限的权限提升,针对Web应用与后台数据库交互的SQL注入,针对文件上传,下载的路径遍历型漏洞等。

4.安全评估

漏洞的危害程度主要受 2 个方面因素影响,即漏洞利用可能性与漏洞造成的损失。如某个溢出漏洞,在当前环境下其利用过程极其困难或者说基本无法利用,那么这个漏洞就是危害程度较低,因为被利用的可能性很小。又如某公司把共享资料的用户名密码直接以明文形式显示于内网某Web站点上,这个漏洞被利用的可能性是很高的,任何位于局域网内的用户都可以获取该信息,而共享的资料为非机密性的学习类资料,则造成的损失较小,通过综合分析判定该漏洞的危害程度在可接受范围内。在真实的测评工作中,在识别漏洞以及安全评估时,需要紧密结合Web应用系统自身的安全需求和测评人员以往工作的经验。

5.解决方案制定

Web安全测评的最终产物是安全解决方案。安全解决方案是根据资产划分、信息收集、漏洞识别及安全评估等阶段的结果生成的一套有针对性的解决办法。Web安全解决方案的制定有两点原则:简洁性与可用性。对于某些大型的Web应用,可能稍有改动都会付出巨大的人力物力,这时需要测试者给出的解决方案是简单有效的,能在解决安全问题的基础上最大程度地压缩成本。如对于某个可导致命令执行的框架漏洞,整体的代码升级固然是根本的解决方案,但是如果漏洞只针对个别页面,则直接将其删除无疑是一种更加简洁易操作的解决方法。

另外,随着Web应用的快速发展,不能因安全解决方案的实施而牺牲了Web应用本身的可用性或性能。如某电子商务网站,出于安全考虑,在用户每次交易时都必须经过各种冗余复杂的验证流程,那么这种解决方案就是失败的。最终解决方案应在Web应用的易用性与安全之间找到一个平衡点,统筹兼顾,从设计上遵循高聚合,低耦合,易于扩展的原则。